package uteis;

import java.util.ArrayList;

public class string_grid<T>
{
	private String[] metodos_get;
	private ArrayList<Integer> tamanhos;
	private ArrayList<T> lista;
	
	public string_grid(ArrayList<T> _lista, String... _metodos_get)
	{
		this.lista = _lista;
		this.metodos_get = _metodos_get;
		this.tamanhos = new ArrayList<Integer>();

		for (int i = 0; i < _metodos_get.length; i++)
		{
			int maior = 0;

			for (T registro : _lista)
			{
				try
				{
					String valor = String.valueOf(registro.getClass()
							.getMethod(_metodos_get[i]).invoke(registro));
					maior = valor.length() > maior ? valor.length() : maior;
				} catch (Exception exc)
				{
				}
			}

			this.tamanhos.add(maior);
		}
	}

	public ArrayList<String> montar()
	{
		ArrayList<String> valores = new ArrayList<String>();

		for (T registro : this.lista)
		{
			String item = "  |  ";

			for (int i = 0; i < this.metodos_get.length; i++)
			{
				String metodo_get = this.metodos_get[i];

				try
				{
					String valor = String.valueOf(registro.getClass()
							.getMethod(metodo_get).invoke(registro));
					item += strings.padRight(valor, this.tamanhos.get(i)
							.intValue())
							+ "  |  ";
				} catch (Exception exc)
				{
				}
			}

			valores.add(item);
		}

		return valores;
	}
}